package com.cgg.java8.ch03;

import com.cgg.java8.utils.Utils;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author Xiecheng create on 2021/9/14
 * <p>
 * ch03对应书对第5章：使用流
 * <p>
 * Demo01- 流的筛选， 切片
 */
public class Demo01 {
    public static void main(String[] args) {
        final List<Integer> source = Arrays.asList(1, 2, 8, 8, 4, 5, 6, 4, 7);
        System.out.println("原数字集合:");
        Utils.printListAsJson(source);
        // 筛选出偶数
        final List<Integer> coll1 = source.stream().filter(i -> i % 2 == 0).collect(Collectors.toList());
        System.out.println("所有的偶数：");
        Utils.printListAsJson(coll1);
        // 去重
        final List<Integer> coll2 = source.stream().filter(i -> i % 2 == 0).distinct().collect(Collectors.toList());
        System.out.println("去重后所有的偶数：");
        Utils.printListAsJson(coll2);
        // 去重 + 排序（升序） + 只要3个元素
        final List<Integer> coll3 = source.stream().filter(i -> i % 2 == 0)
                .distinct().sorted().limit(3).collect(Collectors.toList());
        System.out.println("去重、排序后取前3个偶数：");
        Utils.printListAsJson(coll3);

        // 去重 + 排序（升序） + 跳过前2个元素
        final List<Integer> coll4 = source.stream().filter(i -> i % 2 == 0)
                .distinct().sorted().skip(2).collect(Collectors.toList());
        System.out.println("去重、排序后，跳过第1，2个元素");
        Utils.printListAsJson(coll4);
    }
}
